package com.mach.platform.sprider.dev.s7;

import com.mach.platform.sprider.dev.ByteUtil;
import com.mach.platform.sprider.dev.UU;

public class Demo {

    public static void main(String[] args) {
        try {

            SimaticClient client = new SimaticClient("192.168.0.185", 102);

            int count = 0xFF;
//            byte[] values = createValues(1, count);

            // client.send(messages); // 发送自定义报文

//            client.write(0, values); // 从VB0 开始写入 values

            for(int ii = 0; ii<0; ++ii){
                byte[] resultBuf = client.read(102*0, 60);    // 从VB0 开始读取 count个数据

                //打印：第一行为下标，第二行以10进制显示结果，第三行以16进制显示结果
                SimaticClient.print("返回读取VB区的数据【25】起：", resultBuf);

                Object result14 = null;
                byte[] databuf = ByteUtil.subData(resultBuf, 14, 2);
                databuf = ByteUtil.reverse(databuf);
                result14 = ByteUtil.getShort(databuf);

                Object result16 = null;
                databuf = ByteUtil.subData(resultBuf, 16, 2);
                databuf = ByteUtil.reverse(databuf);
                result16 = ByteUtil.getShort(databuf);

                Object result18 = null;
                databuf = ByteUtil.subData(resultBuf, 18, 2);
                databuf = ByteUtil.reverse(databuf);
                result18 = ByteUtil.getShort(databuf);

                    System.out.print(" " + result14 + " " + result16 + " " + result18);

                System.out.println();
            }
            byte[] mySetBuf = new byte[]{
                    3, (byte) 232, //VM20
                    (byte)0x0, (byte) 0, //VM22
                    3, (byte) 232, //VM24
                    3, (byte) 232, //VM26
                    3, (byte) 232, //VM28
                    3, (byte) 232,  //VM30
                    3, (byte) 232  //VM32
            };
            client.write(20, mySetBuf);

            byte[] resultBuf = client.read(102*0, 50);    // 从VB0 开始读取 count个数据
//
//            //打印：第一行为下标，第二行以10进制显示结果，第三行以16进制显示结果
            SimaticClient.print("返回读取VB区的数据【25】起：", resultBuf);
//
//            for(int i =0; i<22; ++i){
//                Object result = null;
//                byte[] databuf = ByteUtil.subData(resultBuf, i, 2);
////                U.printData(databuf);
//                databuf = ByteUtil.reverse(databuf);
//                result = ByteUtil.getShort(databuf);
//
//                System.out.println(""+ i + ":    " + result);
//            }


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void twait(Integer s){
        try {
            Thread.sleep(1000*s);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    //生成简单的测试数据：
    public static byte[] createValues(int min, int count) {
        byte[] values = new byte[count];
        for (int i = 0; i < count; i++) {
//            values[i] = (byte) (i + min);// 注意：大于127时，数据溢出错误
            values[i]=0;
        }
        return values;
    }


}
